package com.suli.multimedia.service;

import com.suli.multimedia.entity.Article;
import com.baomidou.mybatisplus.extension.service.IService;
import com.suli.multimedia.entity.vo.ArticleVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author SuLi
 * @since 2022-03-17
 */
public interface ArticleService extends IService<Article> {

    /**
     * 创建新闻(NEWS)或通知(ANNOUNCE)
     * @param articleVO 文章内容VO类
     */

    boolean createOneArticle(ArticleVO articleVO);

    /**
     *
     * @param page 页码
     * @param limit 获取个数
     * @param articleType 文章类型 0 通知，1 新闻
     * @return 文章列表
     */

    Map<String,Object> getArticleByPage(Long page,Long limit,Integer articleType);

    /**
     *获取用户写的文章
     * @param userId 用户id
     * @param page 页码
     * @param limit 数量
     * @param articleType 文章类型
     * @return 文章列表
     */
    Map<String,Object> getArticleByUserId(String userId,Long page,Long limit,String articleType);

    /**'
     * 根据文章id获取文章详情
     * @param articleId 文章id
     * @return 文章的VO类
     */

    Map<String,Object> getArticleById(Long articleId);

    /**
     * 根据文章title获取文章列表
     * @param title 标题
     * @param articleType 文章类型
     * @return 文章列表
     */
    Map<String,Object> getArticleByTitle(String title,Integer articleType);

    /**
     * 获取被逻辑删除的文章
     * @param page 页码
     * @param limit 数量
     * @param articleType 文章类型
     * @return 文章列表
     */
    Map<String,Object> getArticleListDeleted(Integer page,Integer limit,Integer articleType);

    /**
     * 永久删除文章
     * @param articleId 文章id
     */
    void deleteArticleDeleted(List<Integer> articleId);

    /**
     * 获取逻辑删除文章详情
     * @param articleId 文章id
     * @return 文章内容
     */
    Map<String,Object> getDetailDeleted(Integer articleId);

    /**
     * 批量还原文章
     * @param ids id列表
     * @return 还原结果
     */
    boolean recovery(List<Integer> ids);
}
